home *** CD-ROM | disk | FTP | other *** search
- /*====================================================================================-.
- || Resource Node structures. ||
- `-====================================================================================*/
- typedef struct resnode
- {
- struct resnode *rn_Next; /* Pointer to next ResNode, if any. */
- struct resnode *rn_Prev; /* Pointer to previous ResNode, if any. */
-
- ULONG rn_Size; /* Size of allocation (to be made). */
- void *rn_Mem; /* Memory allocated. Must have size rn_MemSize */
- STRPTR rn_Name; /* (File)Name associated with ResNode. */
- BPTR rn_FHandle; /* File Handle. */
- BPTR rn_Lock; /* File Lock. */
- struct FileInfoBlock *rn_FIB; /* File Info Block. */
- BOOL rn_TempFile; /* If TRUE, file deleted when ResNode is. */
- } ResNode;
-
-
- typedef struct resnode_data
- {
- APTR poolhead; // Memory pool handler. (Uses Opus5 routines)
- ResNode *resnode_base; // The base (first) node in linked list.
- void *data; // For your own use. Given to informUser() only.
- } ResNode_Data;
-
-
- /*====================================================================================-.
- || Magic Numbers ||
- `-====================================================================================*/
- #define RN_INUSE_DELAY 2 // Time, in seconds, to wait between retries when a
- // resource is in use.
- #define RN_INUSE_RETRIES 2 // Number of times to retry before giving up
- // (so total attempts is RETRIES+1).
-
- /*====================================================================================-.
- || Prototypes for Functions in ResourceNodes.c ||
- `-====================================================================================*/
-
- ResNode *createResNode(ResNode_Data *rnd);
- void deleteResNode(ResNode_Data *rnd,ResNode *doomedResNode);
- void deleteAllResNodes(ResNode_Data *rnd);
-
- void *allocMemResNode(ResNode_Data *rnd,ResNode *daddyResNode,ULONG memSize);
- ResNode *allocNewResNode(ResNode_Data *rnd,ULONG memSize);
- void freeMemResNode(ResNode_Data *rnd,ResNode *dietResNode);
-
- BPTR lockFileResNode(ResNode_Data *rnd,ResNode *lockResNode,LONG lockmode);
- void unlockFileResNode(ResNode_Data *rnd,ResNode *lockedResNode);
-
- struct FileInfoBlock *examineResNode(ResNode_Data *rnd,ResNode *rn);
- void freeFIBResNode(ResNode_Data *rnd,ResNode *rn);
-
- BPTR openFileResNode(ResNode_Data *rnd,ResNode *rn,LONG mode);
- void closeFileResNode(ResNode_Data *rnd,ResNode *rn);
-
- void deleteFileResNode(ResNode_Data *rnd,ResNode *rn);
-